答案1
因为整个命令都在双引号内,所以内部' '
还不能作为引号,而只能作为常规文本,并且$5
将扩展为壳变量就在别名定义期间。它可能是一个空字符串,因此您的 awk 命令将awk '{print }'
不再截断不需要的列,结果您的 grep 命令匹配过多。
反斜杠转义$
:
alias fj "... | awk '{print \$5}' | ..."
答案2
我最终不得不为此编写一个脚本,再次使用tcsh
。这是脚本
#!/usr/bin/tcsh
set n_running = `squeue -h -u $USER | awk '{print $5}' | grep R | wc -l`
set n_total = `squeue -h -u $USER | wc -l`
echo $n_running/$n_total
将其另存为jn
并执行chmod +x jn
,然后在~/.cshrc
文件中写入
alias jn '/path/to/jn'
并且路径必须是绝对路径。然后是源~/.cshrc
文件,您就可以使用了jn
!
该脚本将打印出正在运行的作业数与总作业数之差。