Sí, cuando itera sobre la salida de cat file
, itera sobre las palabras .
Una solución:
PATH=/opt/cprocsp/bin/amd64:$PATH
while IFS= read -r line; do
certmgr -inst -cont "$line"
done
Esto leerá las líneas, una por una, y leerá correctamente las barras invertidas y los espacios entre las palabras. Observe la cita de $line
. Consulte " Entendiendo "IFS= read -r line" ".
Originalmente incluí una versión que usaba xargs
, pero noté que esto no conservaba las barras invertidas en los datos file
en algunas circunstancias, y eliminaba las comillas simples.
Судя по командам и комментариям, вы хотите сделать следующее::
for TestString in /home/USER/Downloads/*
do
#CUSTINFO=${TestString/(*)*}
#YEAR=$(grep -o '(.*)' <<<"$TestString")
#RESO3=$(grep -o '\[.*\]' <<<"$TestString")
#RESO2=${RESO3//\[PMNAME\]/}
#RESO_FINAL=${RESO2//\[EETYPE\]/}
#FULL_NAME=$TITLE_FINAL$CUSTINFO$YEAR
#mv "/home/USER/Downloads/$DOWNLOAD_NAME" "/home/USER/Downloads/$FULL_NAME"
#for f in */* ;do fp=$(dirname "$f"); ext="${f##*.}" ; mv "$f" "$fp"/"$fp"."$ext" ;done
done
Внешний цикл for перебирает файлы в/home/USER/Downloads/
(с помощью подстановочного знака ), устанавливая TestString
для каждого имени файла по очереди.