Lire la saisie de l'utilisateur avec les espaces dans les csh Script Shell
J'ai un scénario où l'utilisateur doit être en mesure de saisir une chaîne de caractères avec des espaces. Pour l'instant j'ai:
#bin/csh
echo "TEST 1"
echo -n "Input : "
set TEST = $<
echo "Var | " $TEST
set TEST=`echo $TEST`
echo "Var after echo | " $TEST
set TEST=`echo $TEST | sed 's//_/g'`
echo "Var after change | " $TEST
Si je entrer la chaîne de caractères "r r r" à "l'entrée", $TEST ne prendrait "r". Je veux être en mesure de définir $TEST "r r r". Est-ce possible?
Si je entrer une chaîne comme "1 1 1", j'obtiens une erreur:
ensemble: nom de Variable doit commencer par une
lettre.
Quelle est la raison?
Puis-je vous faqs.org/faqs/unix-faq/shell/csh-whynot ? Il ne suffit pas à résoudre votre problème, mais il illustre les différentes raisons pour lesquelles les csh n'est pas la meilleure coque pour la programmation 🙂
Oui. J'ai l'habitude d'utiliser sh. Dans ce cas, j'ai besoin de naviguer dans un répertoire différent, et encore là quand le script existe. Je fais cela par l'aide de la source (alias aenew "source ~/scripts/aenewc'). Donc, si l'utilisateur travaille dans un shell c, le script devra également être en "csh". C'est la raison pour laquelle j'ai eu recours à csh dans ce cas.
Oui. J'ai l'habitude d'utiliser sh. Dans ce cas, j'ai besoin de naviguer dans un répertoire différent, et encore là quand le script existe. Je fais cela par l'aide de la source (alias aenew "source ~/scripts/aenewc'). Donc, si l'utilisateur travaille dans un shell c, le script devra également être en "csh". C'est la raison pour laquelle j'ai eu recours à csh dans ce cas.
Oui. J'ai l'habitude d'utiliser sh. Dans ce cas, j'ai besoin de naviguer dans un répertoire différent, et encore là quand le script existe. Je fais cela par l'aide de la source (alias aenew "source ~/scripts/aenewc'). Donc, si l'utilisateur travaille dans un shell c, le script devra également être en "csh". C'est la raison pour laquelle j'ai eu recours à csh dans ce cas.
Oui. J'ai l'habitude d'utiliser sh. Dans ce cas, j'ai besoin de naviguer dans un répertoire différent, et encore là quand le script existe. Je fais cela par l'aide de la source (alias aenew "source ~/scripts/aenewc'). Donc, si l'utilisateur travaille dans un shell c, le script devra également être en "csh". C'est la raison pour laquelle j'ai eu recours à csh dans ce cas.
OriginalL'auteur Gayan | 2009-04-22
Vous devez vous connecter pour publier un commentaire.
C'est parce que vous n'êtes pas à l'aide de guillemets dans votre
SET
déclaration. Lorsque vous entrez"r r r"
comme entrée, les deux variantes différentes (non cotées et cotées) sont équivalentes à:Le premier de ceux qui sont simplement des ensembles de
TEST
à"r"
etr
à""
(deux fois!). La seconde définitTEST
à"r r r"
. C'est parce quecsh
vous permet d'effectuer plusieurs tâches comme:Si vous avez besoin d'utiliser le prix de la variante de
SET
. Examiner la transcription suivante pour voir comment il fonctionne:La raison pour laquelle vous obtenez l'erreur que vous décrivez à l'entrée de l'
"1 1 1"
est parce que vous êtes à l'exécution efficace:et
csh
est de prendre ce à dire que vous voulez créer la variableTEST
ensemble de"1"
suivie par la variable1
, qui ne commence pas par une lettre, ne sont donc pas autorisés. Avec la cité de la variante, cela devient:qui font ce que vous attendez.
OriginalL'auteur paxdiablo