我有一个大的bash脚本(version 3.2.51(1)-release)
,我需要存储命令行参数以供脚本使用。
我在这里查了很多帖子,人们建议使用" $ @"访问所有参数。
如果我运行此脚本(test.sh) -
#!/bin/bash
echo "$@";
$> ./test.sh 1 2 3
1 2 3
但如果我运行这个
#!/bin/bash
set args1 = "$@";
... do some work here ...
echo $args1;
运行时我没有输出。我在这里错过了什么? 我想存储参数而不修改它们,然后在脚本中稍后使用它们。
答案 0 :(得分:6)
将所有参数存储在数组中:
args=("$@")
然后将它们打印为:
printf "%s\n" "${args[@]}"
答案 1 :(得分:0)
使用
args1="$*"
如果您希望所有参数都作为单个字符串,则而不是set args1 = "$@";
。
注意:尝试使用双引号变量,否则会松开空格。
或者如果你想以不同的方式对待每一个,那么你需要一个数组:
argarr=("$@")
然后,您可以使用"${argarr[$index]}"
访问数组的每个元素,并使用"${argarr[@]}"