gpt4 book ai didi

linux - 在 ksh shell 脚本中输入临时变量后解析参数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:08:14 25 4
gpt4 key购买 nike

我有一个 shell 脚本如下:

$ cat check.sh  

echo "$@"
for i in "$@"; do
echo "$i"
done

如果我使用命令行参数运行脚本,它会打印如下:

$ ./check.sh arg1 arg2 "This is a message" arg4  

arg1 arg2 This is a message arg4
arg1
arg2
This is a message
arg4

到目前为止一切正常.. -- 显示的参数数量为 4

如果我将 $@ 放入一个变量中并对它做同样的事情,它将表现如下:

$ cat check.sh  

VARGS="$@"
echo "$VARGS"
for i in $VARGS; do
echo "$i"
done


$ ./check.sh arg1 arg2 "This is a message" arg4

arg1 arg2 This is a message arg4
arg1
arg2
This
is
a
message
arg4

这里的参数个数是7个。
我在临时变量中采用参数的原因是从中删除一些不需要的参数并将其传递给另一个应用程序/进程。

谁能告诉我如何在这种情况下获得与使用“$@”相同的行为

提前感谢您的帮助。

最佳答案

我为此使用了 ksh93,但它应该可以在 ksh88 中工作,而且它还有数组:

set -A VARGS "$@"

IFS=

for i in ${VARGS[@]}; do
echo "$i"
done

必须设置 IFS=,否则“This is a message”字符串会被空格截断。

关于linux - 在 ksh shell 脚本中输入临时变量后解析参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29299834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com