Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
是否有一种方法可以执行多个shell变量展开/参数替换?_Shell_Unix - Fatal编程技术网

是否有一种方法可以执行多个shell变量展开/参数替换?

是否有一种方法可以执行多个shell变量展开/参数替换?,shell,unix,Shell,Unix,我的脚本中有一行代码可以在zsh中使用,但不能在bash中使用: SHORTDIR=${${{PWD###*/}/./././.\u dot}/:/./\u colon} 这基本上是basename$PWD | sed-e's/\./0/g'-e's/:/1/g'的简短/高效版本 将变量扩展串在一起的语法是什么 我希望有比这更好的方法 SHORTDIR=${PWD##*/} SHORTDIR=${SHORTDIR//./_dot_} SHORTDIR=${SHORTDIR//:/_colon_

我的脚本中有一行代码可以在zsh中使用,但不能在bash中使用:

SHORTDIR=${${{PWD###*/}/./././.\u dot}/:/./\u colon}
这基本上是
basename$PWD | sed-e's/\./0/g'-e's/:/1/g'
的简短/高效版本


将变量扩展串在一起的语法是什么

我希望有比这更好的方法

SHORTDIR=${PWD##*/}
SHORTDIR=${SHORTDIR//./_dot_}
SHORTDIR=${SHORTDIR//:/_colon_}
但这是我坚持的


根据@perreal链接的问题的答案,bash基本上不允许扩展变量本身作为“参数”,这就是它失败的原因

遗憾的是,替换的第一部分必须是参数名。另一种sed版本是:

echo $PWD | sed -e 's!.*/!!' -e 'y/.:/01/'

简单地说,许多人不知道在一行中可以完成多个作业。例如:

$ a=1234 a=${a:0:3} a=${a/1}


可能的副本有用的知道。
a=${a/1}
是否删除
1
字符?根据@StevenLu,我的印象是需要一个尾随斜杠-是的,没错。不需要尾部斜杠,因为“1”将被替换为零。医生没有提到这一点;但是,bash(1)手册页显示
如果字符串为null,则删除模式的匹配项,并且可以省略/以下模式。
SHORTDIR=${PWD##*/} SHORTDIR=${SHORTDIR//./_dot_} SHORTDIR=${SHORTDIR//:/_colon_}