Questions tagged «bash»

与其他Bourne / POSIX shell相对,GNU的Bourne Again SHell特有的问题。对于一般关于Unix shell的问题,请改用/ shell标记。

3
Bash添加尾随空格以证明字符串正确
我当前的代码如下:x=${y:0:40},它将字符串的长度限制为40个字符。如果字符串少于40个字符,是否可以在结尾处填充空格? 所以如果我的 y="very short text" 我希望自己是: y =“非常短的文字(+25个结尾空格) ”
20 bash 



4
转义变量以用作另一个脚本的内容
这个问题与如何编写正确转义​​的字符串文字无关。我找不到任何有关如何转义变量以直接在脚本或其他程序中使用的相关问题。 我的目标是使一个脚本能够生成其他脚本。这是因为生成的脚本中的任务将在另一台计算机上运行0到n次,并且生成它们的数据可能会在运行之前(再次)更改,因此直接通过网络进行操作将不行。 给定一个可能包含特殊字符(例如单引号)的已知变量,我需要将其写为完全转义的字符串文字,例如,一个foo包含的变量bar'baz应在生成的脚本中显示为: qux='bar'\''baz' 通过附加"qux=$foo_esc"到脚本的其他行来编写。我是这样用Perl做到的: foo_esc="'`perl -pe 's/('\'')/\\1\\\\\\1\\1/g' <<<"$foo"`'" 但这似乎太过分了。 我仅靠bash并没有取得成功。我尝试了这些的许多变体: foo_esc="'${file//\'/\'\\\'\'}'" foo_esc="'${file//\'/'\\''}'" 但是要么多余的斜杠出现在输出中(当我这样做时echo "$foo"),否则它们会导致语法错误(如果从shell进行操作,则需要进一步的输入)。

3
如果通过cat管道传输,则grep直到EOF才输出
给出这个最小的例子 ( echo "LINE 1" ; sleep 1 ; echo "LINE 2" ; ) 它输出LINE 1,然后,在一秒钟后,输出LINE 2,如预期。 如果我们通过管道 grep LINE ( echo "LINE 1" ; sleep 1 ; echo "LINE 2" ; ) | grep LINE 行为与预期的情况相同。 如果,或者,我们将其通过管道传输到 cat ( echo "LINE 1" ; sleep 1 ; echo "LINE 2" …
19 bash  grep  pipe 


3
Bash中的嵌套括号扩展之谜
这个: $ echo {{a..c},{1..3}} 产生这个: a b c 1 2 3 哪个很好,但是鉴于这一点很难解释 $ echo {a..c},{1..3} 给 a,1 a,2 a,3 b,1 b,2 b,3 c,1 c,2 c,3 这是在某处记录的吗?《Bash参考》没有提及它(即使它有使用它的示例)。

1
echo [9876543210]显示1 4 5 6…为什么?
请解释为什么最后四个echo语句显示1 4 5 6?我曾经无意中碰到了这个,但是现在我好奇为什么会发生这种行为。 这些语句按预期工作(对我而言)。 $ echo [ 9876543210 ] [ 9876543210 ] $ echo [237890] [237890] 这些echo语句始终显示1 4 5 6.这些数字是否有特殊之处? $ echo [9876543210] 1 4 5 6 $ echo [abcd9876543210ghi] 1 4 5 6 $ echo [-123456-] 1 4 5 6 $ echo [-7654321-] 1 4 5 6 谢谢! …

3
在这种情况下,$ {1:0:2}是什么意思?
我正在查看下面显示的代码,它检查输入的行/列参数是否以-r或开头-c。${1:0:2}在这种情况下是什么意思? rowArgName="-r" colArgName="-c" if [ "${1:0:2}" != $rowArgName ] && [ "${1:0:2}" != $colArgName ] then echo $correctCmdMsg >&2 exit 1 fi


3
什么时候可以使用临时IFS进行字段拆分?
用bash表示您有var=a.b.c.,然后: $ IFS=. printf "%s\n" $var a.b.c 但是,这样的用法IFS确实会在创建数组时生效: $ IFS=. arr=($var) $ printf "%s\n" "${arr[@]}" a b c 当然,这非常方便,但是在哪里记录了此内容?快速阅读Bash文档中有关数组或单词拆分的部分并不会给出任何指示。对于搜索IFS通过单页文档不提供有关这种效应的任何暗示无论是。 我不确定何时可以可靠地做到: IFS=x do something 并期望这IFS会影响字段拆分。
19 bash 

6
bash脚本的dd样式参数
我想将参数传递给dd风格的bash脚本。基本上我要 ./script a=1 b=43 具有与...相同的效果 a=1 b=43 ./script 我以为我可以做到: for arg in "$@"; do eval "$arg"; done 确保eval安全的好方法是什么,即"$arg"与静态(无代码执行)变量分配匹配的好方法? 还是有更好的方法来做到这一点?(我想保持简单)。
19 bash 

2
如何不进行递归
我正在尝试使用目录中的模式ls一些文件。我只想扫描第一个级别而不递归。 我的剧本: for i in $(ls $INCOMINGDIR/*$BUSSINESSDATE*) do echo $i; done 以上命令以递归方式扫描。如何仅扫描第一级目录?
19 bash  shell-script  ls 

3
如何在bash中明确和安全地强制使用内置命令
还有一个类似的问题涉及“包装”方案,您想在其中替换为例如cd调用buildin的命令cd。 但是,鉴于shellshock等人,并且知道bash从环境中导入功能,所以我进行了一些测试,但找不到cd从脚本中安全调用内置函数的方法。 考虑一下 cd() { echo "muahaha"; } export -f cd 在此环境中使用调用的所有脚本cd都会中断(请考虑类似的效果cd dir && rm -rf .)。 有用于检查命令类型的命令(通常称为type)和用于执行内置版本而不是功能(builtin和command)的命令。但是,瞧,这些也可以使用函数覆盖 builtin() { "$@"; } command() { "$@"; } type() { echo "$1 is a shell builtin"; } 将产生以下内容: $ type cd cd is a shell builtin $ cd x muahaha $ builtin …
19 bash  security 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.