Zakładając, że rjp2tif
zespół zwraca ścieżkę do pliku w standardowym wyjściu, i chcesz przekazać ten wniosek jako zwykły argument CLI innej drużynie, może cię zainteresowaćxargs
zespół. Ale należy pamiętać, że w ogólnym przypadku można spotkać się z pewnym problemem, jeśli ścieżka zawiera spacje lub około tego:
Rozważ argumenty, oddzielone spacją, karty, nowej wierszem i końcem pliku, z standardowych danych wejściowych i wykonaj podaną narzędzia z nimi jako argumentów.
Argumenty zazwyczaj stanowią długą listę nazw plików (wygenerowany ls
lub find
, na przykład), które są przekazywane w xargs
na rurze.
Dlatego w tym przypadku, zakładając, że każda ścieżka do pliku zajmuje tylko jedną linię (co, oczywiście, ma miejsce, jeśli w ogóle jest tylko jeden wiersz), można korzystać z następujących czynności NUL
-to opis generowany w oparciu rada natr
zespół.
Oto zespół, który otrzymasz:
rjp2tif /path/to/rjpeg | tr '\n' '\0' | xargs -0 open -a imagej
Uwaga: mam SYSTEMU operacyjnego GNU/Linux, więc nie można potwierdzić, że działa pod macOS?
FTR, poniżej znajduje się pełny kod powłoki, który pozwala przetestować w dwóch różnych trybach xargs
: tworzenie jednej drużyny na argument wiersza (-n1
), lub jedna drużyna ze wszystkimi argumentami wiersza za jednym razem:
$ printf 'one \ntwo\nthree and four' | tr '\n' '\0' | xargs -0 -n1 \
bash -c 'printf "Run "; for a; do printf "\"$a\" "; done; echo' bash
Run "one "
Run "two"
Run "three and four"
$ printf 'one \ntwo\nthree and four' | tr '\n' '\0' | xargs -0 \
bash -c 'printf "Run "; for a; do printf "\"$a\" "; done; echo' bash
Run "one " "two" "three and four"
######################################
# or alternatively (with no for loop):
######################################
$ printf 'one \ntwo\nthree and four' | tr '\n' '\0' | xargs -0 -n1 \
bash -c 'printf "Run "; printf "\"%s\" " "$@"; echo' bash
Run "one "
Run "two"
Run "three and four"
$ printf 'one \ntwo\nthree and four' | tr '\n' '\0' | xargs -0 \
bash -c 'printf "Run "; printf "\"%s\" " "$@"; echo' bash
Run "one " "two" "three and four"
tr
zespół, który podałeś wyżej, działa na macOS, dziękuję. Odkryłem, że-t
opcja (śledzenie) dlaxargs
przydatne, aby pokazać, żexargs
wykonuje polecenie. W tym przypadku, gdypath/to/tiff
przekazywane wxargs
na rurzexargs
zmienia kolejność wykonywania poleceniaopen -a imagej path/to/tiff
. Bardzo pomocne.