クエリと変数を関連付ける方法がわかりません。申し訳ありません。すべてがよく整理されています。
#!/bin/bash
KONIEC=0;
while [ $KONIEC -eq 0 ]; do
echo "-------------------------------------------------------"
echo "1. Nazwa pliku: $NAZWA"
echo "2. Katalog: $KATALOG"
echo "3. Ile dni temu dostano się ostatnio do pliku: $ILEDNI"
echo "4. Plik ma mniej niż: $MNIEJSZYNIZ"
echo "5. Plik ma więcej niż: $WIECEJNIZ"
echo "6. Zawartość pliku: $ZAWARTOSC"
echo "7. Szukaj"
echo "8. Koniec"
echo "-------------------------------------------------------"
read POLECENIE
if [ $POLECENIE -eq 1 ] ; then
read -p "Podaj nazwe: " NAZWA
elif [ $POLECENIE -eq 2 ] ; then
read -p "Podaj katalog(pełna ścieżka w formacie ./KATALOG/Katalog/katalog/, wielkość liter ma znaczenie): " KATALOG
elif [ $POLECENIE -eq 3 ] ; then
read -p "Ile dni temu dostałeś/łaś się ostatnio do pliku(0 jeżeli dzisiaj): " ILEDNI
elif [ $POLECENIE -eq 4 ] ; then
read -p "Plik ma mniej niż (w MB): " MNIEJSZYNIZ
elif [ $POLECENIE -eq 5 ] ; then
read -p "Plik ma więcej niż (w MB): " WIECEJNIZ
elif [ $POLECENIE -eq 6 ] ; then
read -p "Podaj zawartość tekstową pliku (aby ta opcja działała prawidłowo w ścieżkach nie mogą wyspępować spacje): " ZAWARTOSC
elif [ $POLECENIE -eq 7 ] ; then
echo "Trwa wyszukiwanie..."
if [ $NAZWA ] ; then
BUFFER1="-iname '$NAZWA'"
fi
if [ $KATALOG ] && [ $NAZWA ] ; then
BUFFER1="$KATALOG* -iname '$NAZWA'"
elif [ $KATALOG ] ; then
BUFFER1="$KATALOG"
fi
if [ $ILEDNI ] ; then
BUFFER2="-atime $ILEDNI"
fi
if [ $MNIEJSZYNIZ ] ; then
BUFFER3="-size -$MNIEJSZYNIZ"
fi
if [ $WIECEJNIZ ] ; then
BUFFER4="-size +$WIECEJNIZ"
fi
if [ $ZAWARTOSC ] ; then
BUFFER5="|xargs grep -l '$ZAWARTOSC'"
fi
MAINBUFFER="$BUFFER1 $BUFFER2 $BUFFER3 $BUFFER4"
find $MAINBUFFER
elif [ $POLECENIE -eq 8 ] ; then
KONIEC=1
else echo "brak takiego polecenia"
fi
done
答え1
[ ]
そのようなことをすることは許されず、それを使用したり、別々[[ ]]
のテストにすることも許されません。
if [ "$KATALOG" ] && [ "$NAZWA" ] ; then
または
if [[ "$KATALOG" && "$NAZWA" ]] ; then
すべての変数を引用する必要があります。
bashで使用しないもう一つの理由です
[ ]
。
答え2
Aは&&
内部的に無効です[]
。使用[[...]]
または:
If [ "$KATALOG" ] && [ "$NAZWA" ] ; then
shellcheck.netでスクリプトを試しましたか?
次の行46は改行またはで終わる必要があります;
。