Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何理解${var:-world}_Linux_Shell - Fatal编程技术网

Linux 如何理解${var:-world}

Linux 如何理解${var:-world},linux,shell,Linux,Shell,你能解释一下为什么第二个echo${var:-world}outputhello不是world 顺便问一下,这个题目用英语叫什么?我搜索了切割字符串,子字符串。。。 谢谢。${name:-alternate}是带有默认值的参数扩展。从: ${参数:-word} 使用默认值。如果参数为unset或null,则替换word的展开形式。否则,将替换参数的值 第一个${var:-world}已打印world,因为$var未设置。第二次打印的是hello,因为您设置了$var=hello,所以$var不再

你能解释一下为什么第二个
echo${var:-world}
output
hello
不是
world

顺便问一下,这个题目用英语叫什么?我搜索了切割字符串,子字符串。。。
谢谢。

${name:-alternate}
是带有默认值的参数扩展。从:

${参数:-word}

使用默认值。如果参数为unset或null,则替换word的展开形式。否则,将替换参数的值

第一个
${var:-world}
已打印
world
,因为
$var
未设置。第二次打印的是
hello
,因为您设置了
$var=hello
,所以
$var
不再是未设置的。因此,默认值(
world
)被忽略


更多信息请访问。

您是否作为root用户进行这些实验?还是使用“#”作为非root用户的默认提示?不管怎样,别再这样做了。@williampersell是的,我以root用户身份登录。为什么不能使用“#”?这是stackoverflow规则,还是使用linux时需要考虑的其他一些问题?惯例是提示中的前导字符“#”表示root登录。几乎全世界都承认,以root用户身份运行交互式shell是一种不好的做法,而且由于
sudo
的引入几乎没有必要。@williampersell是的,universal但对我来说:)。无论如何,谢谢!我会努力变得更专业。
# echo ${var}

# echo ${var:-world}
world
# var='hello'
# echo ${var}
hello
# echo ${var:-world}
hello