变量中的命令不更新

问题描述 投票:0回答:3

将命令分配给变量的正确方法是什么?又名我应该如何使用引号逗号以及如何将其分配给变量,以便命令是最新的?例如

我在

home/desktop
。 我分配变量

b=`pwd`
echo "$b" // home/desktop 

但是当我更改目录时

cd games
pwd // home/desktop/games
echo "$b" // home/desktop

不更新。我也想做一些类似的事情

g="-l"
ls $g

可能吗?

shell unix sh
3个回答
1
投票

变量永远不会自动更新,您必须重新分配它们,即

b=`pwd`
echo "$b" // home/desktop 
cd games
pwd // home/desktop/games
b=`pwd`
echo "$b" // home/desktop/games

至于你的第二个问题,我认为这只能使用

eval
:

g=" -la"
eval "ls"$g

对此要非常小心 编写可能危及安全性的东西非常容易,实际上大多数人(包括我自己!)都会强烈建议您永远不要使用

eval
,除非所有其他方法都失败了。 考虑上面的代码仅用于演示目的,在任何情况下都不能在生产系统中使用。


0
投票

我认为您混淆了分配变量和别名。 分配变量意味着将命令的结果存储在变量中 这个命令的作用是什么

b=`pwd` 

正在运行

pwd
并将答案存储在变量 b 中。

别名意味着给某些命令起一个不同的名称。所以运行

alias b pwd
会使得每当你运行 b 时,你实际上都会运行
pwd


0
投票

b
仅在运行第一个命令时设置(将
pwd
的输出分配给
b
,它不会将这些项目链接在一起(以便在每次调用时设置 b)。有多种方法可以做到(在您的计算机上执行
man bash
)(例如,shell 变量
$PWD
包含此信息。

对于你的第二个问题,是的,你可以这样做,但一个很好的方法是使用

alias
。因此,
alias ll='ls -l'
会在您的系统上创建一个命令,当您键入
ls -l
时,该命令将运行 
ll

© www.soinside.com 2019 - 2024. All rights reserved.