Chci přiřadit výsledek výrazu
 (tj. výstup z příkazu)
 k proměnné a poté s ní manipulovat – například
 jej zřetězit s řetězcem a poté jej echo . 
 Tady je to, co mám:
#!/bin/bash
cd ~/Desktop;
thefile= ls -t -U | grep -m 1 "Screen Shot";
echo "Most recent screenshot is: "$thefile;
 Ale výstup:
Screen Shot 2011-07-03 at 1.55.43 PM.png
Most recent screenshot is: 
 
 Takže to vypadá, že to není přiřazeno k $thefile , a právě se tiskne.
Co mi chybí?
Přijatá odpověď:
 Přiřazení shellu je jedno slovo bez mezery za rovnítkem. Takže to, co jste napsali, přiřadí thefile prázdnou hodnotu; navíc, protože je přiřazení seskupeno s příkazem, vytváří thefile proměnná prostředí a přiřazení je lokální pro tento konkrétní příkaz, tj. pouze volání ls vidí přiřazenou hodnotu.
Chcete zachytit výstup příkazu, takže musíte použít substituci příkazu:
thefile=$(ls -t -U | grep -m 1 "Screen Shot")
 
 (Některá literatura uvádí alternativní syntaxi thefile=`ls …` ; syntaxe backquote je ekvivalentní syntaxi dolarových závorek kromě toho, že citace uvnitř zpětných uvozovek jsou někdy divné, takže stačí použít $(…) .)
Další poznámky k vašemu skriptu:
-  
Kombinace
-t(seřadit podle času) pomocí-U(netříděte pomocí GNUls) nedává smysl; stačí použít-t. -  
Spíše než pomocí
greppro porovnání snímků obrazovky je jasnější předat zástupný znak dolsa použijteheadpro zachycení prvního souboru:thefile=$(ls -td -- *"Screen Shot"* | head -n 1) -  
Obecně je špatný nápad analyzovat výstup
ls. To může selhat docela špatně, pokud máte názvy souborů s netisknutelnými znaky. Bezlsje však řazení souborů podle data obtížné , takže je to přijatelné řešení, pokud víte, že v názvech souborů nebudete mít netisknutelné znaky nebo zpětná lomítka. -  
Vždy používejte dvojité uvozovky kolem náhrad proměnných , tedy sem napište
echo "Most recent screenshot is: $thefile"Bez dvojitých uvozovek je hodnota proměnné znovu rozšířena, což způsobí potíže, pokud obsahuje mezery nebo jiné speciální znaky.
 -  
Nepotřebujete středníky na konci řádku. Jsou nadbytečné, ale neškodné.
 -  
Ve skriptu shellu je často dobré zahrnout
set -e. To říká shellu, aby skončil, pokud některý příkaz selže (vrácením nenulového stavu). 
 Pokud máte GNU find a sort (zejména pokud používáte neembedded Linux nebo Cygwin), existuje jiný způsob, jak najít nejnovější soubor:find vypište soubory a jejich data a použijte sort a read (zde za předpokladu bash nebo zsh pro -d '' číst záznam oddělený NUL) k extrahování nejmladšího souboru.
IFS=/ read -rd '' ignorovaný soubor <<( najít -maxdepth 1 -type f -name "*Snímek obrazovky*" -printf "%[e-mail chráněný]/%p
        
        
        
               
        
        
            Jak smazat soubor, jehož jméno začíná „-“ (pomlčka A.k.a. pomlčka nebo minus)?         
            Jak funguje vstup z klávesnice a textový výstup?    
        
        
    
    
        
            Linux