Je crée un script shell qui prend une entrée standard en option. J'ai un extrait du code ci-dessous. $ {file} est juste un nom de fichier qui est écrit dans un fichier txt contenant une liste de tous les noms de fichiers. $ 2 dans ce cas serait un autre programme (un script shell aussi).Problèmes avec le caractère spécial '<' dans la chaîne Bash?
if [ -f ${file}.in ]; then #if ${file}.in exists in current directory
stdIn="< ${file}.in" #set optional stdIn
fi
if ! [ -f ${file}.args ]; then #if ${file}.args does not exist in curr directory
$2 $stdIn > ${file}.out #run the $2 program with the optional standard input and redirect the output to a .out file
Pour une raison quelconque, le caractère '<' n'est pas interprété correctement. Cela fonctionne bien si je changeais la ligne à
$2 < $stdIn > ${file}.out
et enlevé le « < » de la variable StdIn. Mais je ne veux pas faire cela parce que je vais devoir apporter des changements majeurs au reste de mon code. Quelqu'un sait quoi et comment résoudre le problème avec mon code actuel? Merci beaucoup.
S'il vous plaît lire http://mywiki.wooledge.org/BashFAQ/050 et http://mywiki.wooledge.org/BashParser, le problème est que la redirection se produit avant l'expansion variable de sorte que le '<' est juste un autre personnage, pas spécial. –