Προς το περιεχόμενο

[INFO] Η δύναμη της Κονσόλας


Manos-Sx

Προτεινόμενες αναρτήσεις

  • Απαντ. 889
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Έχω το παρακάτω script:

#!/bin/sh

cat > test << EOF
$VARENV
EOF
Η VARENV είναι μεταβλητή περιβάλλοντος.

 

Πως θα γίνει όταν τρέξει το script να αντικατασταθεί η μεταβλητή απ' το περιεχόμενο της;

 

Έτσι και αλλιώς δεν γίνεται αυτό ? Όταν βλέπεις το περιεχόμενο του test δεν έχει μέσα χύμα την τιμή της VARENV ?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

@imitheos
Χμμ, βασικά τώρα που το λες έχεις δίκιο μάλλον.
Δες το παρακάτω όμως:

 

ilias@archpc ~  ➜ bash
[ilias@archpc ~]$ zsh
                                                                                                                                                              
ilias@archpc ~  ➜ cd tmpdir
                                                                                                                                                              
ilias@archpc ~/tmpdir  ➜ ls
s.sh

ilias@archpc ~/tmpdir  ➜ echo $DOTFILES
/home/ilias/.dotfiles
                                                                                                                                                              
ilias@archpc ~/tmpdir  ➜ cat s.sh
#!/bin/sh

export a="lalala"

cat > test << EOF
echo $HOME
echo $DOTILES
echo $a
EOF
                                                                                                                                                              
ilias@archpc ~/tmpdir  ➜ ./s.sh
                                                                                                                                                              
ilias@archpc ~/tmpdir  ➜ cat test
echo /home/ilias
echo
echo lalala
                                                                                                                                                              
ilias@archpc ~/tmpdir  ➜

 


Την DOTFILES την ορίζω στο .zshrc μου:

export DOTFILES=$HOME/.dotfiles
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

@imitheos

Χμμ, βασικά τώρα που το λες έχεις δίκιο μάλλον.

Δες το παρακάτω όμως:

cat > test << EOF
echo $HOME
echo $DOTILES
echo $a
EOF
                                                                                          ilias@archpc ~/tmpdir  ➜ cat test
echo /home/ilias
echo
echo lalala
                                                                                            

 

Και εδώ βλέπω το test να έχει τα περιεχόμενα όπως θα έπρεπε. Η DOTFILES δεν παίζει μόνο γιατί την έχεις γράψει DOTILES χωρίς F. Μάλλον δεν έχω καταλάβει τι θέλεις να κάνεις.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Έλεος. Σωστά παίζει. :fear:
Το είχα σωστά πριν, χωρίς το τυπογραφικό και τότε δεν έπαιζε γιατί στο .zshrc όριζα την DOTFILES χωρίς να την κάνω export. Μετά έβαλα την export και έκανα misstype και νόμιζα ότι πάλι δεν δουλεύει. :P

Άντε τουλάχιστον πες πως γίνεται να μην αντικαθιστάται η μεταβλητή μπας και μάθουμε και τίποτα. :D

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Άντε τουλάχιστον πες πως γίνεται να μην αντικαθιστάται η μεταβλητή μπας και μάθουμε και τίποτα. :D

% export a=lala
% echo $a
lala
% echo "$a"
lala
% echo '$a'
$a
% echo \$a
$a
Τα single-quotes είναι για τέτοιες δουλειές αλλά έτσι όπως το έχεις με την cat θα σου παίξει η τελευταία μορφή με την \

 

Ψιλό-άσχετο με την περίπτωση αλλά η ερώτησή σου μου θύμισε την indirect προσπέλαση που είναι βολική μερικές φορές οπότε δες και το παρακάτω.

 

% export a=lala
% export lala=35
% echo ${!a}
35
% export lala=80
% echo ${!a}    
80
Το ! λέει πάρε το περιεχόμενο της μεταβλητής και θεώρησε το σαν να ήταν μεταβλητή οπότε κάνε εκείνο expand. Έτσι δηλαδή το ${!a} είναι ισοδύναμο του $lala και όπως βλέπεις δεν θέτει απλά την τιμή αλλά το κάνει σαν συντόμευση και σου εμφανίζει σωστά την τιμή που έχει εκείνη την ώρα.
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ωραια. Εκανα την αρχη με το σκριπτακι που λεει ο oxygen.

$ cat playvid 
#!/bin/bash
echo "Enter video URL:"
read $1
mplayer "$(youtube-dl -g $1)"
Το $1 το εβαλα εκει γιατι με σκετο url ελεγε αυτο

$ playvid https://www.youtube.com/watch?v=0_RueaylsZU
Enter video URL:
/home/jim/bin/playvid: line 3: read: `url': not a valid identifier
και ενα σωρο σαβουρα μετα, που ειναι το λινκ που βγαζει το youdube-dl, σκετο. Δεν παιζει στον mplayer γιατι θελει να ειναι compiled με https support.

 

Και με σκετο playvid δεν σταματαει να με ρωτησει, προχωραει απο μονο του.

$ playvid 
Enter video URL:
/home/jim/bin/playvid: line 3: read: `1': not a valid identifier
Αν βεβαια το δωσω ολο μια κι εξω το παιζει

$ playvid http://vimeo.com/channels/staffpicks/110802348
Enter video URL:
/home/jim/bin/playvid: line 3: read: `1': not a valid identifier
Failed to read /etc/mplayer/mplayer.conf.local: No such file or directory
Warning unknown option include at line 177
MPlayer SVN-r37289 (C) 2000-2013 MPlayer Team

Playing http://pdl.vimeocdn.com/41577/903/303704071.mp4?token2=1415133079_26525dc2dde0138644e7739724fceb5a&aksessionid=19d6a65e41015822.
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το λάθος σου είναι (τουλάχιστον όσον αφορά το δικό μου script) ότι το έτρεξες λάθος, έπρεπε εφόσον έχεις ονομάσει το script playvid να δώσεις ένα σκέτο

 

playvid

 

(και όχι playvid https://mplamplamplala...)

 

αφού ξανακάνεις το url (την λέξη) όπως την είχα, και θα σε ρώταγε μετά για την διεύθυνση. Εναλλακτικά μπορείς να τρέξεις αυτό:

 

#!/bin/bash

mplayer "$(youtube-dl -g $1)"

 

Τρέχοντας

 

playvid εδώ_βάζεις_το_link

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...