有人能告诉我是否应该在shell脚本中包含变量的引号?
例如,以下是正确的:
xdg-open $URL
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)
要么
xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)
如果是这样,为什么?
以下是一系列echo $var可以显示与刚刚分配的值不同的值的情况.无论指定的值是"双引号","单引号"还是不引用,都会发生这种情况.
如何让shell正确设置我的变量?
星号
预期的输出是/* Foobar is free software */,但我得到一个文件名列表:
$ var="/* Foobar is free software */"
$ echo $var
/bin /boot /dev /etc /home /initrd.img /lib /lib64 /media /mnt /opt /proc ...
Run Code Online (Sandbox Code Playgroud)
方括号
期望值是[a-z],但有时我会得到一个字母!
$ var=[a-z]
$ echo $var
c
Run Code Online (Sandbox Code Playgroud)
换行(换行符)
预期值是一个单独的行列表,但所有值都在一行!
$ cat file
foo
bar
baz
$ var=$(cat file)
$ echo $var
foo bar baz
Run Code Online (Sandbox Code Playgroud)
多个空间
我期望一个精心对齐的表头,但是多个空格要么消失要么折叠成一个!
$ var=" title | count"
$ echo $var
title | count
Run Code Online (Sandbox Code Playgroud)
标签
我期望两个制表符分隔值,但我得到两个空格分隔值!
$ …Run Code Online (Sandbox Code Playgroud) 我正面临着Windows下MinGW shell的下一个问题.我有/etc/profile下一个表达式:
export GIT_SSH="/c/Program Files/TortoiseGit/bin/TortoisePlink.exe"
Run Code Online (Sandbox Code Playgroud)
当我在本地存储库上使用git fetch时,这不起作用.但是,如果我这样做(旧的dos方式),它的工作原理:
export GIT_SSH="/c/Progra~1/TortoiseGit/bin/TortoisePlink.exe"
Run Code Online (Sandbox Code Playgroud)
我的问题是:
如何使用变量中的空格使其工作?
出于测试目的,您可以模拟这样的事情(任何示例都是好的):
export VAR="/c/Program Files/TortoiseGit/bin/TortoisePlink.exe"
# and try to execute like this
$VAR
Run Code Online (Sandbox Code Playgroud)
有没有解决方案(除了前面提到的)?
任何链接/提示表示赞赏.
谢谢,
尤利安