LINUX.ORG.RU

История изменений

Исправление sunjob, (текущая версия) :

решил для удобства написания bash-скриптов с «аналогом» функции msg() - сделать бинарную версию

#include <ctype.h>
#include <stdint.h>
#include <stdio.h>

////////////////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[]) 
////////////////////////////////////////////////////////////////////////////////
{
if(argc >= 2) 
  { 
  printf("###\n%s\n###\npress any key to continue...", argv[1]); 
  getchar(); 
  }
 
return 0;
}
////////////////////////////////////////////////////////////////////////////////

почти все нормально

запуск из bash-скрипта (все нормально)

$ ./run_bin.sh
###
Test message!
###
press any key to continue...
###
A B C !
###
press any key to continue...

запуск из ком.строки

$ ./msg.bin "A B C !"
bash: !": event not found

$ ./msg.bin "Й Ц У !"
>

+

траблы выявились на старом баше:

3.1.17(2) - older
4.3.48(1) - new

+

оборачивание msg/bin - в bash-скрипт, не помогает

msg bash-shell

#!/bin/sh

./msg.bin  $@
./msg.bin "$@"
./msg.bin "A B C !"
out
main$ msg "A B C !"
bash: !": event not found

отрабатывает только «непосредственная» установка параметра в «ковычках» (третья команда)

+

ИТОГО:

- если вызывать msg.bin из bash-скриптов, то все нормально
- если вызывать из ком.строки, то косяк на старом bash

если не сложно, волшебные пендили, ссылки, советы :о)

Исходная версия sunjob, :

решил для удобства написания bash-скриптов с «аналогом» функции msg() - сделать бинарную версию

#include <ctype.h>
#include <stdint.h>
#include <stdio.h>

////////////////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[]) 
////////////////////////////////////////////////////////////////////////////////
{
if(argc >= 2) 
  { 
  printf("###\n%s\n###\npress any key to continue...", argv[1]); 
  getchar(); 
  }
 
return 0;
}
////////////////////////////////////////////////////////////////////////////////

почти все нормально

### запуск из bash-скрипта (все нормально)

$ ./run_bin.sh
###
Test message!
###
press any key to continue...
###
A B C !
###
press any key to continue...

### запуск из ком.строки

$ ./msg.bin "A B C !"
bash: !": event not found

$ ./msg.bin "Й Ц У !"
>

+

траблы выявились на старом баше:

3.1.17(2) - older
4.3.48(1) - new

+

оборачивание msg/bin - в bash-скрипт, не помогает

### msg bash-shell

#!/bin/sh

./msg.bin  $@
./msg.bin "$@"
./msg.bin "A B C !"

out

main$ msg "A B C !"
bash: !": event not found

отрабатывает только «непосредственная» установка параметра в «ковычках» (третья команда)

+

ИТОГО:

- если вызывать msg.bin из bash-скриптов, то все нормально
- если вызывать из ком.строки, то косяк на старом bash

если не сложно, волшебные пендили, ссылки, советы :о)