Системная дата в переменную unix

Я хочу запустить следующий script

#!/bin/sh
temp =`date +%Y%m%d`
echo "$temp"

Но это не работает как ожидалось он выбрасывает это сообщение об ошибке: разрешение на выполнение отклонено

5 ответов

У вас есть

temp =`date +%Y%m%d`
 ^

Итак, вам нужно удалить пробел между temp и date:

#!/bin/sh
temp=$(date +%Y%m%d) # better than `exp`, thanks @OliverDulac (see comments)
echo "$temp"

С этим он работает для меня.

Убедитесь, что у файла есть разрешения на выполнение:

chmod +x your_file

или просто выполните его с помощью

/bin/sh /your/script/path/your_file


В сценариях sh (не только bash) знак равенства не принимается при назначении переменной, потому что вы можете сделать что-то вроде этого:

VARIABLE=something ./runcommand

чтобы эта переменная экспортировалась в подпроцесс. /runcommand, но не экспортировалась вообще во все подпроцессы.

Если бы пространство было разрешено, невозможно было бы отличить конец назначения с началом командной строки.


У вашего script действительно есть синтаксическая ошибка, чтобы исправить это, удалив пробел после temp во второй строке, но эта ошибка не будет бросать execute permission denied, но line 2: temp: command not found.

Ваш script не имеет прав выполнения, чтобы исправить его:

chmod +x FILE.sh

где FILE - это имя этого script.


temp переменная должна быть назначена без пробелов.


Я нашел ошибку в моем предыдущем коде, я получил пробел после строки temp. что вызывает ошибку.

licensed under cc by-sa 3.0 with attribution.