Shell Script, pourquoi dois-je obtenir une place ici?

  • delta32
  • Newbie
  • Newbie
  • No Avatar
  • Inscription: Jan 30, 2006
  • Messages: 11
  • Status: Offline

Message Janvier 31st, 2006, 7:19 am

#! / bin / ksh

THIS_DATE = `sqlplus-s / <<eofsql
mis en pages 0
mis en tête
sélectionner to_char (SYSDATE, "YYYYMMDD") de la double;
eofsql »

echo $ (date) THIS_DATE

ce qui donne

date20060131 ..

mais...
....................
sélectionner to_char (SYSDATE, "YYYYMMDD") -1 de double; (juste a -1)
....................

donne

Date 20060131 (ici il ya un espace b / w date et le nombre)

quelqu'un peut me dire pourquoi?
:(
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Janvier 31st, 2006, 7:19 am

  • GhodMode
  • Novice
  • Novice
  • Avatar de l’utilisateur
  • Inscription: Juil 23, 2005
  • Messages: 19
  • Loc: Kota Kinabalu, Sabah, Malaysia
  • Status: Offline

Message Février 5th, 2006, 9:13 am

Depuis to_char () retourne un caractère, plutôt que d'un nombre, il ne signifie rien pour soustraire 1 de sa création. Je pense que ce que vous voulez ressemble à cette note (l'emplacement de l'-1):
Code: [ Select ]
THIS_DATE=`sqlplus -s << ENDSQL
set pages 0
set head off
select to_char( (sysdate - 1), 'YYYYMMDD' ) from dual;
ENDSQL`

echo "date$THIS_DATE"
  1. THIS_DATE=`sqlplus -s << ENDSQL
  2. set pages 0
  3. set head off
  4. select to_char( (sysdate - 1), 'YYYYMMDD' ) from dual;
  5. ENDSQL`
  6. echo "date$THIS_DATE"


Je ne sais pas avec certitude que sa cause de l'espace supplémentaire, though. Vous pouvez supprimer les espaces avec tr:
Code: [ Select ]
echo "date$THIS_DATE" | tr -d ' '


Je pense que c'était une question de SQL * Plus question plutôt que sous Unix / Linux :?