[英]zsh variable assignment within if
这是我在这里的第一个问题,所以......我希望我做对了。
我正在尝试编写一个小的 zsh 脚本 - 以下示例简化了我所拥有的:
function example {
if [ $1 == "my_string" ]; then
local my_variable=10
fi
echo $my_variable
}
// i want
$> example my_string
$> 10
// i get
$> example:1: = not found
我一直在尝试使用和不使用局部变量,我尝试声明并使用或不使用空格以及谷歌搜索数小时。
蒂亚
编辑:附加信息我使用的是 Mac OSX Mavericks - iTerm2 并且我安装了 oh-my-zsh - 这个脚本直接写在我的 ~/.zshrc 中
在 zsh 中,当设置了equals
选项时,输入=program
将扩展到该程序的路径。 在这里,zsh 将==
解释为“ =
程序的路径”,并且没有找到它,打印错误。 您可以引用它或使用[[ ... ]]
代替。
像这样做:
example() {
local my_variable
[[ "$1" == "my_string" ]] && my_variable=10
echo "$my_variable"
}
这是现代bash
,也适用于zsh
。 几点:
[
应该是test
语法糖(一个外部程序)而[[
应该是一个内置的; 更喜欢内置函数(更快+更智能)[[
如果$1
是空的。)&&
或||
如果您的if
只有一个分支(较短), if
用于控制流。试试这个:
#!/bin/bash
function example {
if [ $1 == "my_string" ]; then
local my_variable=10
fi
echo $my_variable
}
example my_string
这为我打印了 10(注意:local:只能在函数中使用,这里很好,对函数的调用必须在 shell 脚本本身内完成,如上所示)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.