gpt4 book ai didi

linux - 通过环境传递的变量在脚本中不可用

转载 作者:太空狗 更新时间:2023-10-29 12:02:18 24 4
gpt4 key购买 nike

我正在尝试编写一个 if/elif/else 语句,其中如果一个变量等于“Full”,它将 cat 一个文件,如果相同的变量等于“Quick”,它将读取一个不同的、更小的文件。该变量在脚本外部设置,并通过 export var1=Quick

导出

我有

#!/bin/sh
echo $var1
export $var1=var1
{
#try cat-ing the file. If it cannot be read, exit with error.
if [ "$var1" = "Full" ];
then
echo "Full read chosen"
cat foo
exit 0
elif [ "$var1" = "Quick" ];
then
echo "Quick read chosen"
cat bar
exit 0
else
echo "Please choose quick or full"
exit 1
fi
}

当我尝试通过调用 ./test 运行脚本时,似乎没有设置变量

+ '[' '' = Full ']'
+ '[' '' = Quick ']'
+ echo 'Please choose quick or full'
Please choose quick or full
+ exit 1

是否有原因,即使变量导出到脚本外部,变量也没有传递给脚本?

最佳答案

以下绝对有效:

$ export var1=Quick
$ ./yourscript

...其中 yourscript 是有问题的脚本。

因此,您的问题需要进行调整以包含足够的信息和详细信息以重现问题。


顺便说一句,你的脚本最好这样写:

#!/bin/sh
case $var1 in
Full)
echo "Full read chosen" >&2
cat foo
;;
Quick)
echo "Quick read chosen" >&2
cat bar
;;
*)
echo "Please choose quick or full" >&2
exit 1
;;
esac
exit 0

以下两项对我有用:

$ var1=Quick ./yourscript
Quick read chosen
cat: bar: No such file or directory
$ (export var1=Quick; ./yourscript)
Quick read chosen
cat: bar: No such file or directory

关于linux - 通过环境传递的变量在脚本中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30712984/

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