#!/bin/bash
a=2
b=2
COUNTER=0
sam="abcd"
sam1="xyz"
sam2="mno"
for x in ls | grep .rpm
do
`C=rpm -qpR $x | grep -v CompressedFileNames | grep -v PayloadFilesHavePrefix | wc -l`
if [ "sam2"!="$sam1" ]
then
echo "${sam1}"
echo "${sam2}"
if [ $C -eq $a ]
then
COUNTER=$((COUNTER+1))
echo "${x}"
eval sam=$x
#eval sam1=sam | cut -d '-' -f 1
sam1=`echo "${sam}"| cut -d '-' -f 1`
if [ $COUNTER -eq $b ]
then
break
fi
fi
fi
sam2=`echo "${x}"| cut -d '-' -f 1`
done
這是我得到的輸出:如果條件爲「不等於」預期在shell腳本不工作
xyz mno comps-4ES-0.20050107.x86_64.rpm comps comps comps-4ES-0.20050525.x86_64.rpm
我的問題是:爲什麼是if
條件儘管SAM1返回true和sam2是否相等?我檢查了不平等。
反應是一樣的,即使我用
if [ $C -eq $a ] && [ "$sam2" != " $sam1" ]
'「SAM2」 =「$ SAM1 「' - >'」$ sam2「!=」$ sam1「'; \'C = ... \''''C ='...''' –
使用http://shellcheck.net檢查此內容,並且在反引號內使用'C =',分配將發生在子外殼,所以不會出現在父母 –
真的嗎? '用於ls中的x | grep .rpm'? 'for * in .rpm'有什麼問題? – ghoti