Puis-je stocker le contenu du fichier dans une variable dans un script shell?
Dire que j'ai un fichier file.txt avec des données (dites '100'). Je veux lire le contenu de ce fichier dans une variable pour le traitement ultérieur. Je veux que cela fonctionne sur Linux et Solaris. Comment puis-je faire cela?
Utilisation de la sortie des commandes Unix pour définir les variables
L'une des meilleures choses à propos de la création de scripts shell, c'est qu'il est très facile à utiliser toute commande Unix pour générer la sortie et l'utiliser pour définir la variable.
Dans cet exemple, je suis en cours d'exécution d'une commande date et l'enregistrement de sa sortie en tant que valeurs de mes variables:
La même approche peut être utilisée pour pratiquement n'importe quel scénario.
de sorte que le mvp de la réponse fonctionne sur n'importe quel unix shell:
F=`cat file.txt`
Juste essayer avec backtick ` pas ' unique qoute
j'ai essayé ci-dessus 2 . Il ne fonctionne pas sur solaris. Il donne une erreur de syntaxe qu'est-ce que votre shell interprète: sh , bash, csh ou ksh ? shell interprète sh Plaine sh sur Solaris est une assez vieille coquille; il ne prend pas en charge $(...) AFAICR, donc vous devez utiliser var=`...` à la place (à noter qu'ils sont de retour-tiques). Dans bash, vous seriez en mesure d'utiliser var=$(<file.txt) qui n'est pas réellement le lancement d'un sous-shell. il a travaillé à l'aide de backtick. Merci pour l'aide
Si vous souhaitez obtenir uniquement la première ligne du fichier, utilisez ceci:
VAR=`head -1 file.txt`
J'ai essayé ci-dessus cmd mais ça ne fonctionne pas. VAR = 'chat file.txt echo $var au-dessus de sorties chat file.txt Assurez-vous d'utiliser backtick, pas '. En cas de doute, le copier et le coller - il NE fonctionne pas
Essayer cette ligne:
ou
EDIT 1:
Utilisation de la sortie des commandes Unix pour définir les variables
L'une des meilleures choses à propos de la création de scripts shell, c'est qu'il est très facile à utiliser toute commande Unix pour générer la sortie et l'utiliser pour définir la variable.
Dans cet exemple, je suis en cours d'exécution d'une commande date et l'enregistrement de sa sortie en tant que valeurs de mes variables:
Si j'exécute ce script simple, je vois les suivantes:
La même approche peut être utilisée pour pratiquement n'importe quel scénario.
de sorte que le mvp de la réponse fonctionne sur n'importe quel unix shell:
Juste essayer avec backtick
`
pas'
unique qoutequ'est-ce que votre shell interprète: sh , bash, csh ou ksh ?
shell interprète sh
Plaine
sh
sur Solaris est une assez vieille coquille; il ne prend pas en charge$(...)
AFAICR, donc vous devez utiliservar=`...`
à la place (à noter qu'ils sont de retour-tiques). Dansbash
, vous seriez en mesure d'utiliservar=$(<file.txt)
qui n'est pas réellement le lancement d'un sous-shell.il a travaillé à l'aide de backtick. Merci pour l'aide
OriginalL'auteur pylover
Cela devrait fonctionner:
Si vous souhaitez obtenir uniquement la première ligne du fichier, utilisez ceci:
VAR = 'chat file.txt echo $var au-dessus de sorties chat file.txt
Assurez-vous d'utiliser backtick, pas
'
. En cas de doute, le copier et le coller - il NE fonctionne pasOriginalL'auteur mvp
Avez-vous essayé les
Il a travaillé quand j'avais besoin de la seconde ligne de une à deux lignes de fichier pour stocker une variable de l'interpréteur de commandes bash.
OriginalL'auteur user3217119