我得到以下错误:
> echo "${$(qstat -a | grep kig):0:7}"
-bash: ${$(qstat -a | grep kig):0:7}: bad substitution我试着在.之前取下
> qstat -a | grep kig
1192530.perceus- kigumen lr_regul pbs.sh 27198 2 16 -- 24:00:00 R 00:32:23并将其用作qdel在openPBS中的参数,以便我可以删除从登录kigumen开始的所有进程。
因此,理想情况下,这应该是可行的:
qdel ${$(qstat -a | grep kig):0:7}到目前为止,只有这样才能做到:
str=$(qstat -a | grep kig); qdel "${str:0:7}"但我想要一个干净的没有临时变量的衬垫。
发布于 2013-08-05 22:40:28
您所使用的shell子字符串构造(:0:7)只用于变量,而不是命令替换。如果要在单个操作中执行此操作,则需要将字符串作为管道的一部分进行修剪,如下所示:
echo "$(qstat -a | grep kig | sed 's/[.].*//')"
echo "$(qstat -a | awk -F. '/kig/ {print $1}')"
echo "$(qstat -a | awk '/kig/ {print substr($0, 1, 7)}')"(请注意,前两个打印第一个".“之前的所有内容,而最后一个打印前7个字符。)我不知道他们中有谁是特别干净的,但是他们没有温度变量.
发布于 2013-09-19 12:41:22
qstat -u palle | cut -f 1 -d "." | xargs qdel杀了我所有的工作..。通常情况下,我会先把工作名称去掉,然后再删除.
所以我用了一个小脚本"idlist":
qstat -u palle | grep -E "*.in" | grep -E "$1" | cut -f 1 -d "." | xargs去看我所有的“map_.”职位:
idlist "map_*"杀了我所有的“map_.”职位:
idlist "map_*" | xargs qdel发布于 2013-08-05 23:02:57
还有另一种方式:
foreach m1 in $(qstat -a );do
if [[ $m1 =~ kig ]];then
m2=${m1%.kig}
echo "kig found $m2 "
break
fi
donehttps://stackoverflow.com/questions/18068807
复制相似问题