2010-10-12 7 views
1

(Désolé pour la confusion précédente signe $ est survenue quand j'ai essayé de simplifier le problème réel Merci pour la correction de la question..)Problème avec les commandes d'exécution dans shell (bash) avec des arguments comme variables!

Je voulais partager un nom de répertoire sur underscores (ex: dir_to_split = « my_test_dir ») comme ce:

my_dir=($dir_to_split) 
var=$(echo $my_dir | awk -F"_" '{print $1,$2,$3}') 
set -- $var 

splited_1=$1 
splited_2=$2 
splited_3=$3 

maintenant en utilisant ces splited_x me cause des erreurs. ex.

myprograme $splited_1 $splited_2 $splited_3 

Quelqu'un peut-il s'il vous plaît aidez-moi avec ça? Thank you ....

+0

Ceci est déroutant. Êtes-vous en train de dire que même après avoir supprimé $ de la première déclaration, cela ne fonctionne toujours pas? –

+0

Désolé les gars, ci-dessus est le véritable exemple. $ erreur de signe s'est produite lorsque j'ai essayé de simplifier le problème – Morpheus

+0

Quelles sont les erreurs exactes? Il est plutôt difficile de diagnostiquer un problème sans savoir de quoi il s'agit. – outis

Répondre

1

(réécrite après la question mise à jour.)

Quel genre d'erreurs que vous obtenez? Je trouve utile d'ajouter set -x au début de mes scripts shell lors du débogage, cela permet au shell d'imprimer toutes les commandes qu'il exécute afin que vous puissiez identifier la ligne où les problèmes commencent.

Etes-vous sûr que $dir_to_split est défini? Contient-il des espaces ou des onglets? Contient-il deux caractères de soulignement? Je ne vois pas d'autres problèmes en ce moment.

Il y a en coquille méthodes de division d'une variable telle que:

dir="my_test_dir" 
OIFS="$IFS" 
IFS="-" 
set -- 
IFS="$OIFS" 

Voir aussi this SO question.

+0

J'ai corrigé votre exemple de code de réponse (je pense qu'il est maintenant ce que vous voulez vraiment dire) –

+0

Dans ce cas, ne pas vous dire: temp = « app » dir_name = $ temp mkdir $ dir_name –

+0

@Delan: Merci, juste repéré moi-même et le corrigeais quand j'ai vu apparaître une belle fenêtre. – schot

Questions connexes