Shell脚本使用临时文件。还有别的办法吗?
我试图用“Unix编程环境”这本书自学shell编程。我试图编写一个脚本来删除系统中的所有信号量。但是,我找不到一种不使用临时文件的方法。下面的代码可以工作,但是使用了一个临时文件。我相信有一个更简单的解决办法。请帮忙Shell脚本使用临时文件。还有别的办法吗?,shell,Shell,我试图用“Unix编程环境”这本书自学shell编程。我试图编写一个脚本来删除系统中的所有信号量。但是,我找不到一种不使用临时文件的方法。下面的代码可以工作,但是使用了一个临时文件。我相信有一个更简单的解决办法。请帮忙 # remsem: Remove all the semaphores IFS=' ' set X`ipcs` j=0 for i do case $i in *semid*) j=1;; *'Message Qu
# remsem: Remove all the semaphores
IFS='
'
set X`ipcs`
j=0
for i
do
case $i in
*semid*) j=1;;
*'Message Queues'*) break;;
esac
if [ $j = 1 ]
then
echo $i
fi
done |
awk ' $1 != "key" { print $1 } ' > /tmp/remsem.$$
set `cat /tmp/remsem.$$`
for i
do
`ipcrm -S $i`
done
rm /tmp/remsem.$$
使用,可以将一个程序的输出作为命令行参数传递给另一个程序
awk '...'| xargs ipcrm -S
或者类似的方法可以达到这个目的。使用,它可以让您将一个程序的输出作为命令行参数传递给另一个程序
awk '...'| xargs ipcrm -S
或者类似的方法可以达到这个目的。看起来您只是在使用临时文件为循环分配$1、$2等。你可以做: for i in $( some command ); do ...; done 对于$中的i(某些命令);做完成 或 一些命令|读我;;做完成 (或使用上述xargs) 另外,在使用tempfile时,通常需要将其自动删除,以便在脚本提前中止时不会挂起。比如: FILE=$(mktemp) trap "rm -f $FILE" 0 ... 文件=$(mktemp) 陷阱“rm-f$文件”0 ...
看起来您只是在使用临时文件为循环分配$1、$2等。你可以做: for i in $( some command ); do ...; done 对于$中的i(某些命令);做完成 或 一些命令|读我;;做完成 (或使用上述xargs) 另外,在使用tempfile时,通常需要将其自动删除,以便在脚本提前中止时不会挂起。比如: FILE=$(mktemp) trap "rm -f $FILE" 0 ... 文件=$(mktemp) 陷阱“rm-f$文件”0 ...