변수에 명령 출력 쓰기 [닫기]

변수에 명령 출력 쓰기 [닫기]

명령의 출력을 변수에 넣고 싶습니다. 내가 아는 한 다음 중 하나를 사용해야 합니다.

variable=$(command)
variable=`command`

내 관점에서는 다음이 작동해야 합니다.

for i in $(ls -1); do
    modTime=$(/usr/gnu/bin/date -r $i +$F)
    echo $modTime
done

나는 또한 백틱을 시도했습니다. 중요한 것은 bash 쉘입니다.

답변1

첫째, 절대로 구문 분석하지 마십시오 ls. 출력은 사람이 읽을 수 있는 것으로 간주되며 구문 분석용으로 설계되지 않았습니다. 아래와 같이 간단히 와일드카드를 반복하는 것이 더 좋습니다.

실제 문제는 $F대신 을 사용하고 있다는 것입니다 %F. 전자는 빈 변수이므로 date 명령의 출력이 없습니다. 따라서 이것은 수정된 명령입니다.

for i in ./*; do
    modTime="$(/usr/gnu/bin/date -r "$i" +%F)"
    echo "$modTime"
done

그러나 단일 find명령으로 원하는 작업을 수행해야 합니다.

find ./ -maxdepth 1 -printf "%TY-%Tm-%Td\n"

관련 정보