假设我有一个名为 foo.sh 的bash脚本。
我想称之为
foo.sh Here is a bunch of stuff on the command-line
我希望将所有文本存储到一个变量中并将其打印出来。
所以我的输出是:
Here is a bunch of stuff on the command-line
我该怎么做?
答案 0 :(得分:27)
echo "$*"
可以做你想要的,即打印出整个命令行参数,用空格分隔(或者,技术上,无论$IFS
的值是多少)。如果你想将它存储到变量中,你可以做
thevar="$*"
如果这不能很好地回答你的问题,我不确定还有什么要说的......
答案 1 :(得分:26)
如果您想避免涉及$ IFS,请使用$ @(或不要在引号中附上$ *)
$ cat atsplat
IFS="_"
echo " at: $@"
echo " splat: $*"
echo "noquote: "$*
$ ./atsplat this is a test
at: this is a test
splat: this_is_a_test
noquote: this is a test
IFS行为也遵循变量赋值。
$ cat atsplat2
IFS="_"
atvar=$@
splatvar=$*
echo " at: $atvar"
echo " splat: $splatvar"
echo "noquote: "$splatvar
$ ./atsplat2 this is a test
at: this is a test
splat: this_is_a_test
noquote: this is a test
请注意,如果在分配$ splatvar之后分配给$ IFS,那么所有输出都是相同的($ IFS在“atsplat2”示例中没有效果)。
答案 2 :(得分:0)