将linux变量设置为命令行输出
我正在使用QNX修改一些文件,然后输出关于这些文件的一些信息。该过程类似于以下内容: 在目录中查找某些文件 如果名称小于某个值 perfumrdd命令 输出文件-info-staus将linux变量设置为命令行输出,linux,hex,dd,Linux,Hex,Dd,我正在使用QNX修改一些文件,然后输出关于这些文件的一些信息。该过程类似于以下内容: 在目录中查找某些文件 如果名称小于某个值 perfumrdd命令 输出文件-info-staus find $DIR -type n \( ! -iname "*sub*" \) -exec basename {} | while read fname do if [ $(printf '%d\n' 0x$fname) -lt 31 ] #if file is < 31 then
find $DIR -type n \( ! -iname "*sub*" \) -exec basename {} |
while read fname
do
if [ $(printf '%d\n' 0x$fname) -lt 31 ] #if file is < 31
then
dd bs=1 skip=67 count=1 if=/path/$fname/random of=/tmp/$fname
echo -n " "$fname" " #output file name
TEMP=$(</tmp/$fname) #temporary file is in
hd -A x /tmp/$fname | gawk '{printf $2}'
if [ $fname == 06 ]; then
COM="Testing on 06" # this is temporary
elif [ $fname == 08 ]; then
case "?? hex value of $2 ?? in
00) COM="DOWN" ;; #again, not sure what works
0x01) COM="UP" ;;
02) COM="Pass Through Mode" ;;
*) COM="ERROR" ;;
esac
else
if [[ $STATE = 0x00 ]]; then #doesn't work either
COM="DOWN"
elif [ "(hd -A x /tmp/$fname | gawk '{printf $2}')" == 0x01 ]; then
COM="UP"
else
COM="ERROR $STATE "
fi
fi
echo " " $COM
fi
done
find$DIR-type n\(!-iname“*sub*”\)-exec basename{}|
读fname时
做
if[$(printf'%d\n'0x$fname)-lt 31]#如果文件小于31
然后
dd bs=1 skip=67 count=1如果=/path/$fname/random of=/tmp/$fname
echo-n“$fname”#输出文件名
TEMP=$(您可以将特定命令发送到stdout的结果存储在变量中,方法是将其括在`引号中:
linecount = `cat text.txt|wc -l`
使用backticks将unix命令的输出捕获到unix变量中,即
t=`/bin/date`
echo the time is $t
你也许可以这样做
firstByte = `dd bs=1 skip=67 count=1 if=/path/$fname/random of=- | hd -A x`
虽然您需要一些额外的参数来hd
来抑制地址信息(我假设这就是您试图使用gawk
步骤所做的。我对hd了解不够——请阅读手册页