Echapper + pipe + scripte shell

bonjour,

    je voudrait mettre dans une variable toto="|grep -i toto"

pour par la suite faire, cat /fichier $toto.

    Le prob ses que le scripte ne prend pas du tout le pipe |.

j’ai tentez d’utilisez le \ mais le retour est toujours le même à savoir cat: option invalide --i

PARTICULARITÉ POUR LA SECTION " TRUCS ET ASTUCES"

CRÉATION D’UN TRUC, D’UNE ASTUCE, ETC. :

Vous voulez partager un truc, une astuce, un tuto, vous devrez procéder comme suit :

  • Ouvrez, dans la section “Trucs & Astuces” (T&A), un fil avec un titre simple mais explicite.
  • Développez votre truc, astuce, tuto, etc…
    *** Ouvrez un second fil, mais cette fois dans la section “Support Debian” (SD). Ce second fil
    devra porter comme titre :
    "Digression ‘suivi du titre du truc, astuce, tuto’ "
  • Revenez dans le fil T&A pour y poster une réponse se bornant à un lien vers le second fil
    que vous venez de créer.
    Exemple :
    titre d’un tuto dans T&A : "Sauvegarder sa distribution"
    titre du fil de discussion dans SD : "Digression Sauvegarder sa distribution"
    Il vous appartiendra, par la suite, de suivre ce fil et de tenir compte des éventuelles
    modifications a y apporter.
    Ces modifications devront être faites en “éditant” votre message originel et non pas en y
    répondant par l’ajout d’un second message.

Tu n’as pas besoin de « tuber » pour ça :

alias toto='grep -i toto' toto fichier

@ggoodluck47 je suis dans le support debian non?

@kna je vais donnez un peut plus de détail sur le scripte

complet=0
while getopts a:bc:d option
do
 case $option in
  a)
   user="|grep -i $OPTARG"
   ;;
  b)
   bidule="|grep -i $OPTARG"
   ;;
  c)
   complet=1
   ;;
  d)
   date="|grep -i $OPTARG"
   ;;
 esac
done
case complet in
  0)
   cat /fichier $user $bidule $date |tail -3
   ;;
  1)
   cat /fichier $user $bidule $date
   ;;
 esac

Comme on le voie dans le code, l’utilisateur n’est pas obligez d’utilisez tout les arguments.
Ses pour sa que je doit passez par des variables.

Merci de tas réponse tout de même

Salut,

Tu es dans le support Debian parce que j’ai transféré ton post :laughing:

arf!!! désolé, j’était entrain de chercher une solution dans les ‘TRUCS ET ASTUCES’ et j’ai postez sans men rendre compte.

sorry sorry

[quote=“robinux”]arf!!! désolé, j’était entrain de chercher une solution dans les ‘TRUCS ET ASTUCES’ et j’ai postez sans men rendre compte.

sorry sorry[/quote]

Ce n’est pas grave :slightly_smiling:

Pour ma gouverne personnelle, tu préfères que je te l’ai signalé ou que je fasse les choses sans expliquer (polémique en cours) :slightly_smiling:

un message avec sujet déplacez de TRUCS ET ASTUCES vers support debian, aurais permis de comprendre mon erreur plus vite.

Mais après ses bien de le savoir pour ne pas pourrir les TRUCS ET ASTUCES

Re,

Ok, je tiendrais compte de ta remarque :slightly_smiling:

Il doit bien y avoir moyen de contourner le problème. Si j’ai bien compris ce que tu veux faire, tu peux faire quelque chose dans ce goût là :

complet=0

# On fait un fichier temporaire
# La variable $$ donne le PID du script, ce qui permet de ne pas utiliser le même fichier si tu lances
# deux fois le script
cp /fichier /tmp/fichier-$$

# On créé une fonction "select" qui "grep" ce qu'on lui donne en argument ($1)
# dans le fichier temporaire et le remplace par le résultat
select() {
   grep -i $1 /tmp/fichier-$$ > /tmp/fichier-new-$$
   mv /tmp/fichier-new-$$ /tmp/fichier-$$
}


while getopts a:bc:d option
do
 case $option in
  a)
   select $OPTARG
   ;;
  b)
   select $OPTARG
   ;;
  c)
   complet=1
   ;;
  d)
   select $OPTARG
   ;;
 esac
done

case complet in
  0)
   cat /tmp/fichier-$$ |tail -3
   ;;
  1)
   cat /tmp/fichier-$$
   ;;
 esac

rm /tmp/fichier-$$

PS : J’ai jamais utilisé getopts, mais ça ne serait pas « :a:b:cd: » qu’il faudrait mettre derrière plutôt ?