![]() |
1
42
不要把整个命令放在变量中。你在试图恢复引用的论点时会遇到很多麻烦。 也:
|
![]() |
2
6
我不确定,但可能值得先对命令运行eval。 这将允许bash将变量$tar_cmd等扩展到它们的整个范围(就像echo命令对控制台所做的那样,您认为它是有效的) 然后bash将在变量展开的情况下再次读取该行。
我刚刚做了一个谷歌搜索,这个页面看起来可以很好地解释为什么需要这样做。 http://fvue.nl/wiki/Bash:_Why_use_eval_with_variable_expansion%3F |
![]() |
3
6
如果需要随着时间的推移建立命令,请使用数组:
或者,如果这只是在一个中心位置定义命令,请使用函数:
|
![]() |
4
4
有一点是只把命令和选项放在变量中。
您可以将命令重新定位到源文件中的另一个文件,以便在许多脚本中重用相同的命令和选项。当你有很多脚本并且你想控制它们如何使用工具的时候,这是非常方便的。因此,标准工具将包含:
|
![]() |
5
1
引用变量中的空格,以便shell能够正确地重新解释 坚硬的 . 正是这种类型的事情促使我去寻求一种更强的语言。不管是perl、python、ruby还是其他什么(我选择perl,但这并不总是适合所有人),它只是 某物 这样你就可以绕过壳牌公司报价了。 并不是说我从来没有尝试过用大量的eval来实现它,而是eval给了我eebie jeebies(当你想要接受用户输入并对其进行eval时,会成为一个全新的头痛,尽管在这种情况下,你需要的是你写的东西并对其进行eval),我已经去了调试时有点麻烦。 以perl为例,我可以做如下事情:
这里最困难的是做管道-但是 IO::Pipe ,fork,然后重新打开stdout和stderr,这还不错。有人会说,这比正确引用shell更糟糕,我知道它们来自何方,但对我来说,这更容易阅读、维护和编写。见鬼,有人可以把这些辛苦的工作去掉,创建一个io::pipeline模块,使整个事情变得微不足道;-) |
![]() |
sk123 · Shell脚本-如何在循环中显示变量名及其值 1 年前 |
|
sai · unix中使用python进行数据重组 1 年前 |
![]() |
FangQ · 如何使用jq打印由制表符“\t”分隔的JSON数组元素 1 年前 |
|
ROHAN · 我想显示包含一个括号的行,包括它的开头或结尾 1 年前 |
![]() |
Geomicro · 删除模式sed之间的逗号 1 年前 |