相关疑难解决方法(0)

处理除第一个之外的所有参数(在bash脚本中)

我有一个简单的脚本,其中第一个参数是为文件名保留的,所有其他可选参数应该传递给脚本的其他部分.

使用Google我发现了这个wiki,但它提供了一个文字示例:

echo "${@: -1}"
Run Code Online (Sandbox Code Playgroud)

我无法得到任何其他工作,例如:

echo "${@:2}"
Run Code Online (Sandbox Code Playgroud)

要么

echo "${@:2,1}"
Run Code Online (Sandbox Code Playgroud)

我从终端得到"坏替换".

问题是什么,除了传递给bash脚本的第一个参数外,我该如何处理?

bash shell

401
推荐指数
3
解决办法
15万
查看次数

如何从以前的bash命令获得倒数第二个参数?(在交互式bash shell中)

如何在bash交互式shell中轻松获取前一个命令的倒数第二个(倒数第二个)单词/参数?我经常在后台运行命令,我想获取之前指定的文件&,例如,

  % echo foo > /tmp/foo &
  % cat !$
  % &
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,!$给出最后一个单词,&.但我想要倒数第二个论点,/tmp/foo



请注意,可以使用类似范围的单词指示符!-1:3,但这对于具有大量单词的命令来说是不切实际的,其中不太明显有多少单词,例如,

% (set -x; date; pwd; git status; git diff;  git log | tail -30; date; args=--verbose time make test; date) >& /tmp/log/make.test.20150122-Thu-0834 &
% echo !-1:30
/tmp/log/make.test.20150122-Thu-0834
Run Code Online (Sandbox Code Playgroud)

上面的示例有效,但您必须计算并知道您想要的单词是第30个单词,这非常耗时且容易出错.

有一个简单的方法来获得倒数第二个(倒数第二个)单词吗?

(请注意,此问题是指交互式shell中前一个命令的参数,而不是指从命令行传递给shell脚本的参数,因为这里的一些答案和注释是指.)

bash shell command-line command-line-arguments interactive-shell

5
推荐指数
2
解决办法
1465
查看次数