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

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

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

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

Δημοσ.

Minimum working example είναι αυτό, μην πιάνεσαι απ' το συγκεκριμένο παράδειγμα.

Θέλω να δημιουργώ ένα scriptάκι δυναμικά και να το αποθηκεύω σε αρχείο.
 

Δημοσ.

Κάντο σε python να τελειώνεις :P

Μικρό είναι ρε συ, δεν αξίζει.

Και θέλω γενικά να ξέρω πως γίνεται αυτό που ρώτησα. :P

Δημοσ.

Έχω το παρακάτω 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

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

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

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

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

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

Σύνδεση

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

Συνδεθείτε τώρα

  • Δημιουργία νέου...