我在一个bash脚本中遇到了这个表达式,谷歌真的不容易.
#$...
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
小智 19
在bash中,这通常是注释,哈希(在同一行)之后的所有内容都被忽略.但是,如果您的bash脚本被传递给异常的东西,那么它可以被解释.
例如,如果您向Sun Grid Engine提交脚本:"任何以hash-dollar开头的行,即#$,都是一个特殊注释,SGE可以理解该注释,以指定有关如何或在何处运行作业的内容.在这种情况下,我们指定要运行作业的目录(#$ -cwd)和作业将加入的队列(#$ -q serial.q)." (来源:http://talby.rcs.manchester.ac.uk/~rcs/_linux_and_hpc_lib/sge_intro.html)
Flo*_* Bw 15
我刚刚遇到#$一个脚本,并想知道同样的事情.有答案尚未提及:在bash搜索和替换(见这里).
通常,它的工作原理如下:
${PARAMETER/PATTERN/STRING}
Run Code Online (Sandbox Code Playgroud)
PATTERN还可以包括锚,以便在开头或结尾匹配它; 即#和%:
MYSTRING=ABCCBA
echo ${MYSTRING/#A/y} # RESULT: yBCCBA
echo ${MYSTRING/%A/y} # RESULT: ABCCBy
Run Code Online (Sandbox Code Playgroud)
您还可以使用变量PATTERN- 并跳过斜杠以添加混淆(并将模式匹配替换为空字符串):
echo ${MYSTRING#$PATTERN} # RESULT: BCCBA
echo ${MYSTRING%$PATTERN} # RESULT: ABCCB
Run Code Online (Sandbox Code Playgroud)
在这里,它是#$一个bash字符串.
预期的表达式可能是 $#而不是#$
$# 存储传递给shell程序的命令行参数的数量.
例如:
if [ $# -eq 0 ]; then
echo "${USAGE}" >&2
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
如果命令行参数的数量为0,则显示存储在$ USAGE变量中的消息.
您可能会看到的一个地方#$是更改基数时的算术表达式内:http : //www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic
例如echo $((2#101))将转换101为基数二,并打印5。
我最近在这里使用了这个:
calculate_time() {
minutes=$((${1:0:1} + ${1:9:1}))
seconds=$((${1:2:1} + ${1:11:1}))
milliseconds=$((10#${1:4:3} + 10#${1:13:3}))
result=$((${minutes}*60*1000 + ${seconds}*1000 + ${milliseconds}))
echo $result
}
Run Code Online (Sandbox Code Playgroud)
第一个参数 ( $1) 的格式我不记得是使用awk. 毫秒参数被解析为009, 9 毫秒。但是,bash 将以 0 开头的数字视为八进制,因此我将它们转换为十进制。它并不完全是 using #$,但是当我在一段时间后查看此代码并试图记住发生了什么时,我一开始以为这是一个表达式并发现了这个问题,因此这可能对其他人有所帮助。
| 归档时间: |
|
| 查看次数: |
33664 次 |
| 最近记录: |