将命令分配给变量

时间:2015-10-13 21:32:16

标签: unix

将命令分配给变量的正确方法是什么。 a.k.a我该如何使用引号逗号以及如何将它分配给变量,所以命令是最新的?例如

我在家/桌面 我指定变量

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

但是当我更改目录

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

它没有更新。我也想做像

这样的事情
g="-l"
ls $g

有可能吗?

3 个答案:

答案 0 :(得分: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,除非所有其他人都有失败。 考虑上面的代码仅用于演示目的,在任何情况下都不能用于生产系统。

答案 1 :(得分:0)

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

到你的第二个问题,是的,你可以这样做,但这是一个很好的方法,所以它是使用alias。因此,alias ll='ls -l'在您的系统上创建一个命令,当您输入ls -l

时,该命令将运行ll

答案 2 :(得分:0)

我认为你在使用别名分配变量时感到困惑。 分配变量意味着您将命令的结果存储在变量中 这个命令做什么

b=`pwd` 

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

和别名意味着为某些命令提供不同的名称。因此,无论何时运行b,运行alias b pwd都会使其运行pwd