Você deve aspas duplas:
time_stamp="$(date)"
touch "$time_stamp"
Nesse caso, aspas duplas em "$(date)"
não são obrigatórias, mas é uma boa prática fazer isso. Você pode ler this para mais compreensão.
Gostaria de criar um manipulador de erros que tornará um arquivo vazio marcado com o tempo error_occur.
A ideia principal é usar o resultado do comando date
como um parâmetro.
eu fiz:
time_stamp=$(date)
touch $time_stamp
Mas isso acaba criando uma série de arquivos vazios como 2014
, Wed
, 11:15:20
.
Como converter time_stamp para uma string inteira aqui?
Você deve aspas duplas:
time_stamp="$(date)"
touch "$time_stamp"
Nesse caso, aspas duplas em "$(date)"
não são obrigatórias, mas é uma boa prática fazer isso. Você pode ler this para mais compreensão.
A resposta de cuonglm resolve o problema de criar um arquivo com espaços em geral, mas o problema começa usando a saída padrão de date
.
Se você quiser usar uma string de data ou hora como parte de seu nome de arquivo, você deve sempre usar a opção --rfc-3339
(se estiver em um sistema GNU recente) ou uma string de formato apropriada. Isso fornecerá a você nomes de arquivos que podem ser classificados de maneira lógica. A opção --rfc-3339
usa um parâmetro, use seconds
, ns
ou date
dependendo da precisão desejada no nome do arquivo:
time_stamp="$(date --rfc-3339=seconds)"
touch "$time_stamp"
Você também pode obter uma string específica sem espaços e apenas as informações necessárias de date +FORMAT
(use man date
para detalhes).
time_stamp="$(date +%Y%m%d-%H%M)"
touch "$time_stamp"
fornecerá um arquivo com um nome como 20141029-0944
sem espaços e dando a ilusão de que você não precisa citar. Mas você ainda faz isso, pois ainda estaria invocando o operador split + glob que ainda poderia realmente ser dividido se usado em um contexto em que $IFS
foi alterado do padrão.
Tags bash shell shell-script