双引号,单引号和无引号的假设

我是

在bash中:

使用双引号

echo "*" #Globbing is never done
echo "$variable" # Variable expansion is always done
echo "$(command)" # command expansion is always done

使用单引号

echo '*' #Globbing is never done 
echo '$variable' # Variable expansion is never done
echo '$(command)' # command expansion is never done

不使用引号

echo * #Globbing always done.
echo $variable; # Variable expansion is always done
echo $(command) # command expansion is always done

这将适用于所有命令吗?

圣哈克斯

看起来您正在寻找例外,我想您会想到一些例外。我将假设set -f/set -o noglob被排除在这种情况下?

使用该dd命令时,即使不加引号,也不会发生globbing。

$ ls *.txt
blah.txt  file1.txt  file2.txt  file.txt  logfile.txt
$ dd if=*.txt of=glob.txt
dd: failed to open ‘*.txt’: No such file or directory

反驳和误报

这是一些奇怪的例子,但随着扩展

variable='2010-09-08 12:34:56' echo "$variable" | xargs date +%s -d date: extra operand '12:34:56'

额外的操作数表明变量扩展正在发生,您在管道中丢失了引号。 $ date +%s -d 2010-09-08 12:34:56 date: extra operand ‘12:34:56’

如果您创建了一个脚本echo $1,然后在传递时扩展了引用的变量,也会发生这种情况它会扩展,并按预期工作。因此,问题不在于xargs,而是与在管道之前的正常扩展有关。

  1. 评估...评估的整个目的是在运行命令之前对其args进行扩展。也会发生扩展bash -c,只是需要一个参数。因此,这又不是扩展问题,而是命令使用问题。

cmd='printf "%s\n" "$(date -d "$variable" +%c)"' bash -c $cmd

与扩展版本相同

$ bash -c printf "%s\n" "$(date -d "$variable" +%c)" printf: usage: printf [-v var] format [arguments]

  1. 我真的很喜欢Hauri的$'...'和$“ ...”信息-但是,这些与我们所说的不一样。实际上,它们的行为如bash手册页所说的那样。$''与''的区别与(())与$(())的区别

  2. 我对此感到很兴奋,所以... $ ls mclark.txt qt sign_in.txt skel.bash $ zip m*t.zip *t $ ls *.zip m*t.zip

但是,这也不对,splat会扩展,但是在没有匹配的情况下,zip会将其用作文字。我找到了一些执行此操作的命令,但是如果存在匹配项(稍后添加了my.zip),它将使用匹配的扩展名(抛出错误,b / c my.zip是用于测试目的的文本文件)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

groovy用单引号和双引号替换双引号

来自分类Dev

groovy用单引号和双引号替换双引号

来自分类Dev

psycopg,双引号和单引号插入

来自分类Dev

单引号和双引号,如何安排?

来自分类Dev

sed中的单引号和双引号

来自分类Dev

单引号,双引号和无引号的Javascript正则表达式

来自分类Dev

PHP单引号与双引号

来自分类Dev

单引号比双引号更快?

来自分类Dev

处理单引号和双引号php和ajax

来自分类Dev

HTML和CSS中的单引号和双引号

来自分类Dev

Prolog:单引号和双引号的行为不同

来自分类Dev

JavaScript / Sublime Text:交换单引号和双引号键

来自分类Dev

在单引号和双引号内捕获__('<string>')

来自分类Dev

单引号和双引号的文字之间的Yacc /野牛区别

来自分类Dev

使用JavaScript对#,单引号和双引号进行编码

来自分类Dev

壳双引号和单引号有什么好记法?

来自分类Dev

单引号和双引号自动切换

来自分类Dev

使用__repr __()了解双引号和单引号之间的区别

来自分类Dev

ansible shell转义单引号和双引号

来自分类Dev

使用PHP在单引号和双引号之间查找内容

来自分类Dev

PostgreSQL regex_replace逗号,单引号和双引号

来自分类Dev

Python中的标准双引号,单引号和撇号

来自分类Dev

替换字符串中的单引号和双引号

来自分类Dev

在单引号和双引号之前添加反斜杠

来自分类Dev

单引号和双引号使用data.replace的问题

来自分类Dev

bash:通过grep匹配单引号和双引号

来自分类Dev

bash:通过grep匹配单引号和双引号

来自分类Dev

bash:通过grep匹配单引号和双引号

来自分类Dev

壳双引号和单引号有什么好记法?

Related 相关文章

热门标签

归档