提问人:Steve 提问时间:9/7/2022 最后编辑:Steve 更新时间:9/14/2022 访问量:727
使用另一个 bash 脚本中的命名参数运行命令行
Run command line with named arguments from another bash script
问:
我有一个脚本,它采用参数的名称及其值,如下所示:
script1.sh --netId netIdValue
但是,我想在另一个脚本中多次调用此命令,以获取 netId 参数的不同值。 因此,在 script2.sh 中,我想从.txt文件中读取netIdValue的值,然后调用相同的命令,如下所示:
while IFS= read -r line; do
netIdValue=$line
./script1.sh --netId $netIdValue
done < netNames.txt
但是,这失败了,似乎问题在于它没有正确地接受 --netId。 如何在 script2.sh 中传递参数名称及其值?
答:
1赞
James Risner
9/14/2022
#1
我的 script1.sh 是:
#!/bin/sh
echo "$1" "$2" - "$#"
如果您的 ID 位于文件中,每行一个,请执行以下操作:
% cat file
1
2
% cat file | \
xargs -I {} ./script1.sh --netId {}
--netId 1 - 2
--netId 2 - 2
如果您的 ID 位于用空格分隔的一行上,请执行以下操作:
% cat file
1 2
% cat file | tr ' ' '\0' | \
xargs -0 -I {} ./script1.sh --netId {}
--netId 1 - 2
--netId 2 - 2
对于分隔,我使用将空格转换为空格 (\0),并使用选项将输入分隔为 null。tr
xargs -0
评论
IFS-
IFS=
\r\n
bash -x yourscript
--netId "$netIdValue"
line
read -r netIdValue