有价值的变化取决于参数文件的存在
Valuable changes depends on the existence of argument file
我这样写 fish shell 的配置:
# One or more argument(s) will be given
function run
set -l src $argv[1]
set -l var
switch "$src"
case *
set var "$src"
end
echo $var
end
如果给出一个或多个参数,我预计在任何情况下都会打印第一个参数。但是,如果存在与 $argv[1]
同名的文件,$var
变为 $argv[1]
,否则变为空字符串。
谁能告诉我为什么?
case *
中的 *
被解释为 glob。如果您不想要它,请引用它。
Faho 已经回答了你的问题,但我想指出你的方法比必要的更复杂。如果您只想打印第一个参数(如果提供了一个或多个),请执行以下操作:
set -q argv[1]
and echo $argv[1]
第一个语句检查 argv
是否至少有一个值。如果前面的语句返回成功(即 $status
设置为零),第二个会回应它。
我这样写 fish shell 的配置:
# One or more argument(s) will be given
function run
set -l src $argv[1]
set -l var
switch "$src"
case *
set var "$src"
end
echo $var
end
如果给出一个或多个参数,我预计在任何情况下都会打印第一个参数。但是,如果存在与 $argv[1]
同名的文件,$var
变为 $argv[1]
,否则变为空字符串。
谁能告诉我为什么?
case *
中的 *
被解释为 glob。如果您不想要它,请引用它。
Faho 已经回答了你的问题,但我想指出你的方法比必要的更复杂。如果您只想打印第一个参数(如果提供了一个或多个),请执行以下操作:
set -q argv[1]
and echo $argv[1]
第一个语句检查 argv
是否至少有一个值。如果前面的语句返回成功(即 $status
设置为零),第二个会回应它。